package com.dataextend.mapper.cluster;


import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface MarketMapper {

    List<String> channelList();

    void actMissionCreate(@Param("missionId") String missionId, @Param("missionName") String missionName, @Param("introduction") String introduction,
                          @Param("actJudge") String actJudge, @Param("propertyJudge") String propertyJudge, @Param("blacklistFilter") String blacklistFilter,
                          @Param("waitFilter") String waitFilter, @Param("putChannel") String putChannel,@Param("createTime") String createTime,
                          @Param("sequence") String sequence, @Param("creator") String creator, @Param("status") Integer status);

    List<JSONObject> regularUsergroupList(@Param("name") String name);

    List<JSONObject> regularMissionStatusInfo();

    List<JSONObject> actMissionStatusInfo();


    List<JSONObject> regularMissionList(@Param("name") String name, @Param("status") Integer status,
                                        @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize);

    List<JSONObject> actMissionList(@Param("name") String name, @Param("status") Integer status,
                                    @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize);

    Integer regularMissionListCount(@Param("name") String name, @Param("status") Integer status);

    Integer actMissionListCount(@Param("name") String name, @Param("status") Integer status);



    String maxActMissionId();

    String maxMissionId();

//    String maxActMissionId();

    void createRegularMission(@Param("missionId") String missionId, @Param("missionName") String missionName, @Param("groupId") String groupId,
                              @Param("messageTitle") String messageTitle,@Param("messageContent") String messageContent,
                              @Param("channel") String channel, @Param("sendRules") String sendRules, @Param("status") Integer status,
                              @Param("createTime") String createTime, @Param("creator") String creator);


    void regularMissionChangeState(@Param("missionId") String missionId,@Param("status") Integer status);

    void actMissionChangeState(@Param("missionId") String missionId,@Param("status") Integer status);

    void regularMissionDelete(@Param("missionId") String missionId);

    void actMissionDelete(@Param("missionId") String missionId);



    // 推送消息列表
    List<JSONObject> marketEmailList(@Param("missionName") String missionName, @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize);
    Integer marketEmailCount(@Param("missionName") String missionName);
    List<JSONObject> marketMessageList(@Param("missionName") String missionName, @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize);
    Integer marketMessageCount(@Param("missionName") String missionName);
    List<JSONObject> marketPushList(@Param("missionName") String missionName, @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize);
    Integer marketPushCount(@Param("missionName") String missionName);

    // 推送邮件的记录
    void emailInfoInsert(@Param("groupId") String groupId, @Param("groupName") String groupName, @Param("missionName") String missionName, @Param("emailName") String emailName,
                         @Param("messageInfo") String messageInfo, @Param("senderEmail") String senderEmail, @Param("pushPattern") String pushPattern,
                         @Param("creater") String creater, @Param("pushStartTime") String pushStartTime, @Param("pushEndTime") String pushEndTime, @Param("nowTime") String nowTime);


    // 推送短信的记录
    void messageInfoInsert(@Param("groupId") String groupId, @Param("groupName") String groupName,  @Param("missionName") String missionName,@Param("messageInfo") String messageInfo,
                           @Param("pushPattern") String pushPattern, @Param("creater") String creater,  @Param("nowTime") String nowTime,
                           @Param("pushStartTime") String pushStartTime, @Param("pushEndTime") String pushEndTime);


    // 消息通知接口
    void pushInfoInsert(@Param("groupId") String groupId, @Param("groupName") String groupName,  @Param("missionName") String missionName,@Param("messageInfo") String messageInfo,
                        @Param("pushPattern") String pushPattern, @Param("creater") String creater,  @Param("nowTime") String nowTime,
                        @Param("pushStartTime") String pushStartTime, @Param("pushEndTime") String pushEndTime);


    // 模拟数据
    void emailResultInsert(@Param("groupId") String groupId, @Param("groupName") String groupName, @Param("addTime") String addTime, @Param("sendTime") String sendTime,
                           @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("targetNum") Integer targetNum,
                           @Param("sendNum") Integer sendNum, @Param("clickNum") Integer clickNum, @Param("dealNum") Integer dealNum);

    // 推送效果详情
    JSONObject marketEmailDetail(@Param("groupId") String groupId, @Param("addTime") String addTime);
    JSONObject marketMessageDetail(@Param("groupId") String groupId, @Param("addTime") String addTime);
    JSONObject marketPushDetail(@Param("groupId") String groupId, @Param("addTime") String addTime);


}
